<?php
include_once '../config/koneksi.php';
class Pegawai {
var $nip;
var $nama_pegawai;
var $jns_kelamin;
var $pangkat_golongan;
var $seksi;
var $status;
var $status_kawin;
var $role;
var $atasan;
protected $connect;

    function __construct(){
        $this->connect = new Koneksi();
        $this->connect->connect();
        
    }
    
    //fungsi untuk mendapatkan pegawai berdasarkan nip
    function  getPegawai($nip){ 
        $users=new Pegawai();
        $sql=$this->connect->query("select * from d_pegawai WHERE nip='".$nip."'");
        $row=$sql->fetch();
        if($row){
            $users->nip=$row['nip'];
            $users->nama_pegawai=$row['nama'];
            $users->jns_kelamin=$row['jns_kelamin'];
            $users->pangkat_golongan=$row['pangkat'];
            $users->seksi=$row['id_seksi'];
            $users->status=$row['id_statuspeg'];
            $users->status_kawin=$row['id_statuskawin'];
            return $users;
        } 
    }
    
    //fungsi untuk menampilkan semua jenjang kepangkapan pegawai
    function getPangkat(){
        $data=array();
        $sql=$this->connect->query("SELECT CONCAT(pangkat,',',ket_pangkat) as pangkatnya
                                            FROM ref_pangkat");
        if($sql){
            while($row=$sql->fetch()){
                $pangkats=new Pegawai();
                $pangkats->pangkat_golongan=$row['pangkatnya'];
                $data[]=$pangkats;
            };
            return $data; 
        }
    }

    //fungsi untuk menampilkan semua bagian dimana pegawai bekerja
    function getSeksi(){
        $data=array();
        $sql=$this->connect->query("SELECT CONCAT(id_seksi,',',nm_seksi) as seksi
                                            FROM d_seksi");
        if($sql){
            while($row=$sql->fetch()){
                $seksis=new Pegawai();
                $seksis->seksi=$row['seksi'];
                $data[]=$seksis;
            };
            return $data; 
        }
    }
    
    //fungsi untuk mendapatkan semua status kawin pegawai
    function getStatusKawin(){
        $data=array();
        $sql=$this->connect->query("SELECT CONCAT(id_statuskawin,',',ket_statuskawin) as status_kawin
                                            FROM ref_statuskawin");
        if($sql){
            while($row=$sql->fetch()){
                $kawin=new Pegawai();
                $kawin->status_kawin=$row['status_kawin'];
                $data[]=$kawin;
            };
            return $data; 
        }
    }
    
    //fungsi untuk mendapatkan status pegawai, apakah aktif atau non aktif
     function getStatus(){
        $data=array();
        $sql=$this->connect->query("SELECT CONCAT(id_statuspeg,',',ket_statuspeg) as status
                                            FROM ref_statuspegawai");
        if($sql){
            while($row=$sql->fetch()){
                $statusnya=new Pegawai();
                $statusnya->status=$row['status'];
                $data[]=$statusnya;
            };
            return $data; 
        }
    }
    
      //fungsi untuk mendapatkan jenis kelamin pegawai
      function getGender(){
        $data=array();
        $sql=$this->connect->query("SELECT CONCAT(jns_kelamin,',',ket_gender) as jns_kelamin
                                            FROM ref_gender");
        if($sql){
            while($row=$sql->fetch()){
                $gender=new Pegawai();
                $gender->jns_kelamin=$row['jns_kelamin'];
                $data[]=$gender;
            };
            return $data; 
        }
    }
    
    //fungsi untuk mendapatkan rekan kerja dalam satu bagian
    //digunakan untuk mendapatkan penanggungjawab pekerjaan selama menjalankan cuti
    function getRekanBagian($nip,$bagian){
        $data=array();
        $sql=$this->connect->query("SELECT nip,nama FROM d_pegawai WHERE id_seksi='".$bagian."' AND nip!='".$nip."' AND id_statuspeg=1");
//        var_dump($sql);
         if($sql){
            while($row=$sql->fetch()){
                $rekan=new Pegawai();
                $rekan->nip=$row['nip'];
                $rekan->nama_pegawai=$row['nama'];
                $data[]=$rekan;
            };
            return $data; 
        }
    }

    //menghitung jumlah semua pegawai
    function countPegawai(){
            $where;
            @session_start();
            if($_SESSION['admin']=="Y"){
                $where="id_statuspeg=1";
            }else{
                $where="1";
            }
            $query=$this->connect->query("SELECT * FROM d_pegawai WHERE $where");    
            $jml_data=$query->rowCount();
            if($jml_data>=1)
            {
                    $hasil=$query->fetchAll();
                    return $hasil;
            }
            else
            {
                    return $jml_pegawai;
            }
    }
    
    //menghitung jumlah pegawai dalam satu bagian
    function countPegawaiBagian($bagian){
            $query=$this->connect->query("SELECT * FROM d_pegawai where id_seksi=".$bagian);
            $jml_data=$query->rowCount();
            return $jml_data;
    }
    
    //fungsi untuk mendapatkan semua pegawai
    //jika admin, semua data pegawai aktif dan non aktof ditampilkan
    //jika pegawai biasa, hanya ditampilakn pegawai yang aktif
    function getAllPegawai($hal){
        $where;
        $limit;
        @session_start();
        //jika admin, semua pegawai ditampilkan
        if($_SESSION['admin']=='T'){
            $where='a.id_statuspeg=1';
        }else{
            $where="1";
        }
        $daftar_user=array();
        $sql=array();
        $next=(($hal-1) * 3);
        $top= 5;    //ditampilkan 5 pegawai per halaman
        //jika halaman selanjutnya tidak ada, maka hanya ditampilkan 1 halaman saja
        if($next==0){
            $limit="$top";
        }else{
            $limit="$top,$next";
        }
        $sql=$this->connect->query("select 
            a.nip,
            a.nama,
            b.ket_gender,
            c.ket_pangkat,
            d.ket_statuspeg,
            e.nm_seksi,
            CONCAT(a.id_statuskawin,',',f.ket_statuskawin) as ket_statuskawin
            from d_pegawai as a INNER JOIN ref_gender as b
                                    ON  a.jns_kelamin=b.jns_kelamin
                                INNER JOIN ref_pangkat as c
                                    ON a.pangkat=c.pangkat
                                INNER JOIN ref_statuspegawai as d
                                    ON a.id_statuspeg=d.id_statuspeg
                                INNER JOIN d_seksi as e
                                    ON a.id_seksi=e.id_seksi
                                LEFT JOIN ref_statuskawin as f
                                    ON a.id_statuskawin=f.id_statuskawin
                                WHERE $where
                                ORDER BY c.pangkat DESC
                                LIMIT $limit
                           ");
        if($sql){
            while($hasil=$sql->fetch()){
                $users = new Pegawai();
                $users->nip=$hasil['nip'];
                $users->status=$hasil['ket_statuspeg'];
                $users->status_kawin=$hasil['ket_statuskawin'];
                $users->nama_pegawai=$hasil['nama'];
                $users->jns_kelamin=$hasil['ket_gender'];
                $users->pangkat_golongan=$hasil['ket_pangkat'];
                $users->seksi=$hasil['nm_seksi'];
                $daftar_user[]=$users;
            }
            return $daftar_user;
        }                      
    }



    function rekamPegawai($nip,$pass,$nama,$jns_kelamin,$pangkat,$id_seksi,$status,$statuskawin){
            $query=$this->connect->prepare("INSERT INTO d_pegawai(nip,pass,nama,jns_kelamin,pangkat,id_seksi,id_statuspeg,id_statuskawin,log_update) VALUES(?,?,?,?,?,?,?,?,?)");
            $date_rekam=date("Y-m-d");
            $isi=array($nip,$pass,$nama,$jns_kelamin,$pangkat,$id_seksi,$status,$statuskawin,$date_rekam);
            $query->execute($isi);
            $jml_data=$query->rowCount();
            return $jml_data;
    }
    
    function ubahPegawai($nip,$nama,$jns_kelamin,$pangkat,$id_seksi,$status,$statuskawin){
            $query=$this->connect->prepare("UPDATE d_pegawai SET nama= ?, jns_kelamin= ?,pangkat= ?, id_seksi= ?,id_statuspeg= ?,id_statuskawin=?,log_update= ? where nip= ?");
            $date_ubah=date("Y-m-d");
            $isi=array($nama,$jns_kelamin,$pangkat,$id_seksi,$status,$statuskawin,$date_ubah,$nip);
            $query->execute($isi);
            $jml_data=$query->rowCount();
            return $jml_data;
    }
    
    function hapusPegawai($nip){
        $query=$this->connect->prepare("DELETE from d_pegawai WHERE nip= ?");
        $isi=array($nip);
        $query->execute($isi);
        $hasil=$query->rowCount();
        return $hasil;
    }
    
    //mengecek pegawai sudah ada belum di database
    function cekNip($nip){
        $this->nip=nip;
        $query=$this->connect->query("select * from d_pegawai where nip=".$this->nip);
        $hasil=$query->rowCount();
        return $hasil;                
    }
}